package cn.itcast.java.inner;

/**
 * Author itcast
 * Date 2021/10/10 11:23
 * •定义Animal抽象类, 该类中有一个抽象方法eat().
 * •在测试类的main方法中, 通过匿名内部类的形式创建Animal抽象类的子类对象.（3种重写Animal#eat，前两种需要定义子类）
 * •调用Animal类中的eat()方法
 */
public class AnimalTest01 {
    public static void main(String[] args) {
        //可以通过多态来获取猫类中的 eat 方法
        //Animal cat = new Cat();
        //通过匿名内部类实现
        //本质——匿名内部类就是一个 子类对象
        new Animal() {
            @Override
            public void eat() {
                System.out.println("猫吃鱼");
            }
        };
        //
        System.out.println("-------------------------");
       // print(cat);
        System.out.println("--------------------------");
        print(new Animal() {
            @Override
            public void eat() {
                System.out.println("猫吃鱼");
            }
        });

        //如何使用
        print(new Animal() {
            @Override
            public void eat() {
                //实现需要抽象方法
            }
        });
    }



    private static void print(Animal animal){
        animal.eat();
    }
}
